const app = getApp()

// pages/home/home.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 摄像头的前置与后置数据
    devicePosition: "front",
    // 拍照得到的图片的路径
    imageSrc: '',
    flag: true,
    // 检测的颜值信息
    face_list: [],
    // 映射关系  可将英文字符映射为中文
    map: {
      gender: {
        male: '男性',
        female: '女性'
      },
      expression: {
        none: '不笑',
        smile: '微笑',
        laugh: '大笑'
      },
      glasses: {
        none: '无眼镜',
        common: '普通眼镜',
        sun: '墨镜'
      },
      emotion: {
        angry: '愤怒',
        disgust: '厌恶',
        fear: '恐惧',
        happy: '高兴',
        sad: '伤心',
        surprise: '惊讶',
        neutral: '无表情',
        pouty: '撅嘴',
        grimace: '鬼脸'
      }
    },
    isShowBox: false
  },
  // 点相片显示相机 隐藏图片
  imageChange() {
    this.setData({
      imageSrc: '',
      flag: true,
      isShowBox: false
    })
  },


  // 点击反转相机
  reverseCamera() {
    let newdev = this.data.devicePosition === "front" ? "back" : "front"
    this.setData({
      devicePosition: newdev
    })
  },
  // 点击拍照按钮
  takeCamera() {
    // 创建相机对象
    const cxt = wx.createCameraContext()
    // 相机的拍摄的方法
    cxt.takePhoto({
      quality: 'high',
      success: res => {
        this.setData({
          imageSrc: res.tempImagePath,
          flag: false,
          isShowBox: true
        }, () => {
          // 调用颜值测试函数
          this.textFace()
        })
      },
      fail: err => {
        this.setData({
          imageSrc: '',
          flag: true
        })
        wx.showToast({
          title: err,
          icon: "none"
        })
      }
    })
  },
  // 点击上传图片
  clooseImg() {
    wx.chooseImage({
      count: 1,
      sizeType: ['original'],
      sourceType: ['album'],
      success: res => {
        if (res.tempFilePaths[0]) {
          this.setData({
            imageSrc: res.tempFilePaths[0],
            flag: false,
            isShowBox: true
          }, () => {
            // 调用颜值测试函数
            this.textFace()
          })
        }
      },
      fail: err => {
        this.setData({
          imageSrc: [],
          flag: true
        })

        wx.showToast({
          title: '已取消',
          icon: 'none'
        })
      }
    })
  },

  // 颜值测试的函数
  textFace() {

    const token = app.globalData.access_token

    // 在调用百度测颜值api接口 我们需要传入 base64格式的图片路径
    const fileManager = wx.getFileSystemManager()
    const base64Img = fileManager.readFileSync(this.data.imageSrc, 'base64')

    wx.showLoading({
      title: '正在检测颜值中...'
    })


    // 请求百度 测颜值api
    wx.request({
      url: 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' + token,
      method: 'POST',
      header: {
        'Content-Type': 'application/json'
      },
      data: {
        image: base64Img,
        image_type: 'BASE64',
        face_field: 'age,beauty,expression,gender,glasses,emotion'
      },
      success: res => {
        if (res.data.result === null) return wx.showToast({
          title: '检测不到人脸',
          icon: 'none'
        })
        // console.log(res.data.result.face_list[0])
        this.setData({
          face_list: res.data.result.face_list[0]
        })
        console.log(this.data.face_list)
      },
      fail: err => {
        wx.showToast({
          title: '检测失败',
          icon: 'none'
        })
      },
      complete:res=>{
        wx.hideLoading()
      }
    })
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})